<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../rurple.css" type="text/css" />

<title>If, else, if, else, ....</title>
</head>
<body>
<h2 class="title">14. <span class="pykeyword">if, else, <small>if,
else,</small></span>...</h2>

<p>Bir önceki engelli atlama alıştırmasında üç seçimlik vermek istediğimizden 
dolayı (bitir, git veya zıpla) iç içe iki tane <span class="pykeyword">if</span>/<span class=
"pykeyword">else</span> kullanmamız gerekti. Buda yazılan kodun içe içe 
yazılmasını mecbur hale getirdi. Reeborg'a 10 ayrı seçimlik vermemiz gerekseydi 
ne olurdu; kodlar içe içe yazılacağından okunması bir hayli zor olacaktı. Bu 
durumu ortadan kaldırmak için  Guido van Rossum, Python'un yaratıcısı,   <span class="pykeyword">else</span> 
den sonra kullanılan  <span class="pykeyword">if</span> leri temsil etmek 
için  <span class=
"pykeyword">elif </span>adında bir komut hazırlamıştır. <span class=
"pykeyword">elif </span>komutu
<span class="pykeyword">else if</span> in kısaltılmışıdır. Bu yeni komut 
yardımıyla az önceki kod aşağıdaki gibi yazılabilir:</p>

<pre>
<span class="keyword">def</span> move_jump_or_finish():
    <span class="keyword">if</span> on_beeper():
        turn_off()
    <span class="keyword">elif</span> front_is_clear():
        move()
    <span class="keyword">else</span>:
        jump_one_hurdle()
</pre>

<p>Üç seçimlik olduğunu şimdi daha rahat görebiliyoruz, seçimlikler aynı hizada 
yazılmışlar. <span class="pykeyword">else</span> den sonraki komutun 
çalıştırılabilmesi için kendisinden önce gelen tüm şartların (<font face="Courier New" size="2">next_to_beeper 
ve front_is_clear</font>) False olması gerekir. Daha fazla seçimliğimiz olsaydı 
tek yapmamız gereken yeni  <span class="pykeyword">elif</span> 'ler eklemek 
olacaktı.  </p>

<pre>
<span class="keyword">def</span> move_jump_or_finish():
    <span class="keyword">if</span> next_to_beeper():
        turn_off()
    <span class="keyword">elif</span> front_is_clear():
        move()
    <span class="keyword">elif</span> right_is_clear(): <span class=
"comment"># her zaman false</span>
        <span class="keyword">pass</span> 
    <span class="keyword">else</span>:
        jump_one_hurdle()
</pre>

<p>Reeborg en alt duvarın üstünde hareket ettiğinden sağında her zaman bir duvar 
vardır. Bu nedenle <tt>right_is_clear()</tt> her zaman False sonucunu verir ve <span class="pykeyword">pass</span> 
(Phytonda hiç bir şey yapma anlamına gelir) komutu hiç bir zaman yerine 
getirilmez. Bunun yerine<tt> left_is_clear()</tt> kullanılsaydı True değerini 
alacağından Reeborg takılıp kalacak ve hiç bir şey yapmayacaktı.  <b>Bunu 
deneyin!</b></p>

<h3 class="try">Sıra sizde</h3>

<p><span class="pykeyword">if, elif, else</span>
kullanarak yeni bir program yazın bu program önceki iki alıştırmadaki engellerle 
çalıştığı gibi aşağıdaki şekildeki engellerle de çalışabilsin. (dünya dosyası 
hurdles3.wld).</p>

<img alt="hurdles start" src="../../images/intro/hurdles3_start.png" />

<div class="lessons_nav">
<a href="13-else.htm"><img alt="previous" src=
"../../images/previous.png" /> Beni dinle yoksa  ... or else
....</a> - <a href=
"../lessons_toc.htm"><img alt="home" src="../../images/home.png" /></a> - 
<a href="15-not.htm">Doğru değil Not true!? <img alt="next" src=
"../../images/next.png" /></a>
</div>
</body>
</html>

